package com.simtop.dao;

import com.simtop.pojo.exchangepo.Answer;
import com.simtop.pojo.exchangepo.Question;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;


@Mapper
public interface QuestionAnswerMapper {

    /**
     * 查询所有记录
     *
     * @param question
     * @return 返回集合，没有返回空List
     */
    List<Question> listAll(Question question);

    /**
     * 根据主键查询
     *
     * @param questionId 主键
     * @return 返回记录，没有返回null
     */
    Question getById(Integer questionId);

    /**
     * 新增，插入所有字段
     *
     * @param tbQuestion 新增的记录
     * @return 返回影响行数
     */
    int insert(Question tbQuestion);

    /**
     * 修改，修改所有字段
     *
     * @param tbQuestion 修改的记录
     * @return 返回影响行数
     */
    int update(Question tbQuestion);

    /**
     * 删除记录
     *
     * @param tbQuestion 待删除的记录
     * @return 返回影响行数
     */
    int delete(Question tbQuestion);

    /**
     * 根据问题id获取回答
     *
     * @param answer
     * @return
     */
    List<Answer> getAllAnswer(Answer answer);

    /**
     * 新增，插入所有字段
     *
     * @param answer 新增的记录
     * @return 返回影响行数
     */
    int insertAnswer(Answer answer);

    /**
     * 修改，修改所有字段
     *
     * @param answer 修改的记录
     * @return 返回影响行数
     */
    int updateAnswer(Answer answer);

    /**
     * 删除记录
     *
     * @param answer 待删除的记录
     * @return 返回影响行数
     */
    int deleteAnswer(Answer answer);

    /**
     * 获取通过的回复数
     *
     * @param questionId
     * @return
     */
    int getPassAnswer(Integer questionId);

    /**
     * 获取总回复数
     *
     * @param questionId
     * @return
     */
    int totalPasswordAnswer(Integer questionId);

    /**
     * 做实验时获取的所有
     *
     * @return
     */
    List<Question> getPageQuestion();

    /**
     * 做实验时获取的所有回复
     *
     * @return
     */
    List<Answer> getPageAnswer(@Param("questionId") Integer questionId, @Param("userId") Integer userId);
}
